// 用于发起请求的函数
// const baseUrl = 'http://565e783e.r18.cpolar.top'
// const baseUrl = 'http://2fdc9022.r18.cpolar.top'


import Setting from '@/setting.js'

function request(options) {
	return new Promise((resolve, reject) => {
		uni.request({
			url: options.url,
			method: options.method || 'GET',
			data: options.data || {},
			header: options.header || {},
			timeout: options.timeout || 10000,
			success(res) {
				// uni.hideLoading(); // 在这里调用
				// 如果状态码是200且接口返回成功标志
				if (res.statusCode === 200 && res.data.code === 200) {
					resolve(res.data);
					// uni.showToast({
					// 	title: res.data.msg,
					// 	icon: 'none'
					// })
				} else {
					reject(res);
					uni.showToast({
						title: res.data.msg || '链接超时',
						icon: 'none'
					})
				}
			},
			fail(err) {
				// uni.hideLoading(); // 在这里调用
				reject(err);
				uni.showToast({
					// title: "请求失败，换个网络试试",
					title: err.errMsg || "请求失败，换个网络试试",
					icon: 'none'
				})
			},
			// 成功失败都会执行
			complete() {
				// uni.hideLoading()
			}
		});
	});
}

/**
 * 上传文件
 * @param {String} url 上传接口的地址
 * @param {String} filePath 文件路径
 * @param {Object} formData 表单数据
 * @param {String} fileName 后端接收文件的参数名，默认为 'file'
 * @returns {Promise} 返回一个 Promise 对象
 */
export function uploadFile({
	url,
	filePath,
	formData = {},
	fileName = 'file'
}) {
	return new Promise((resolve, reject) => {
		uni.uploadFile({
			url: url, // 后端接口 URL
			filePath: filePath, // 文件路径
			name: fileName, // 文件参数名，后端接收的名称
			formData: formData, // 其他表单数据
			success: (uploadRes) => {
				// uni.hideLoading(); // 在这里调用
				// console.log(uploadRes);
				try {
					const data = JSON.parse(uploadRes.data); // 假设后端返回的是 JSON 格式
					resolve(data); // 成功时，返回后端返回的内容
				} catch (error) {
					reject(new Error('文件上传成功，但解析返回数据失败'));

				}
			},
			fail: (err) => { 
				// uni.hideLoading(); // 在这里调用
				reject(err); // 上传失败时，返回错误
			},
			complete() {
				// uni.hideLoading()
			}
		});
	});
}
// 配置请求拦截器函数
function addRequestInterceptor(interceptor) {
	uni.addInterceptor('request', interceptor);
	uni.addInterceptor('uploadFile', interceptor);
}

// 配置请求拦截
addRequestInterceptor({
	invoke(options) {
		// 开启 loadding
		// uni.showLoading({
		// 	title: '加载中...',
		// 	mask: true
		// })
		if (!options.url.startsWith('http')) {
			options.url = Setting.apiBaseUrl + options.url
		}
	}
})

export default request